|
The Macintosh Toolbox is a set of application programming interfaces with a particular access mechanism. They implement many of the high-level features of the "classic" Mac OS. The Toolbox consists of a number of "managers," software components such as QuickDraw, responsible for drawing onscreen graphics, and the Menu Manager, which maintain data structures describing the menu bar. As the original Macintosh was designed without virtual memory or memory protection, it was important to classify code according to when it should be loaded into memory or kept on disk, and how it should be accessed. The Toolbox consists of subroutines essential enough to be permanently kept in memory and accessible by a two-byte machine instruction; however it excludes core "kernel" functionality such as memory management and the file system. Note that the Toolbox does not ''draw'' the menu onscreen: menus were designed to have a customizable appearance, so the drawing code was stored in a resource, which could be on a disk. == Advent and implementation == The original Motorola 68000 family implementation of the Macintosh operating system executes system calls using that processor's illegal opcode exception handling mechanism. Motorola specified that instructions beginning with ''1111'' and ''1010'' would never be used in future 68000 family processors, thus freeing them for use as such by an operating system. As ''1111'' was reserved for use by ''co''-processors such as the 68881 FPU, Apple chose ''1010'', which is the binary equivalent of the decimal number ten, as the prefix for operating system calls. Ten is represented in hexadecimal as ''A'', and handling illegal instructions is known as ''trapping'', so these special instructions were called ''A-traps''.〔(【引用サイトリンク】title=A-Line Instructions )〕 When the processor encounters such an instruction, it transfers control to the operating system, which looks up the appropriate task and performs it. There were two advantages to this mechanism: * It results in compact programs. Only two bytes are taken by every operating system access, in contrast to four or six when using regular jump instructions. * The table used to look up the appropriate function is stored in RAM. Then, even if the underlying code was stored in ROM, it could still be overridden (''patched'') by replacing the ROM memory address with a RAM address. The system was further optimized by allotting some bits of the A-trap instruction to store parameters to the most common functions. For example, memory allocation is a very common task, so it should be expressed in as few bytes of code as possible. Sometimes the programmer wants to clear the memory block to zeros, so either the allocation function should take a boolean parameter, or there should be two allocation functions. To pass a parameter would require an additional two-byte instruction, which would be inefficient. Having two functions would require at least an extra four bytes of RAM used for the address in the function look-up table. The most efficient solution is to map multiple A-traps to the same subroutine, which then uses the A-trap as a parameter. This is true of the most commonly used subroutines. However, the Toolbox was composed of the ''less'' commonly used subroutines. The Toolbox was defined as the set of subroutines which took no parameters within the A-trap, and were indexed from a 1024-entry, 4-kilobyte dispatch table.〔(【引用サイトリンク】title=About the Trap Manager )〕 (Machines shipped with less than one megabyte of RAM use a single table of 512 entries, which corresponds to the 256-entry OS dispatch table of later ROM revisions.〔(Linux/m68k for Macintosh - Mac Alamanac II )〕) 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Macintosh Toolbox」の詳細全文を読む スポンサード リンク
|